package JZOffer;

import java.util.Arrays;
import java.util.Comparator;

/**
 * 剑指 Offer 45. 把数组排成最小的数
 * 输入一个非负整数数组，把数组里所有数字拼接起来排成一个数，
 * 打印能拼接出的所有数字中最小的一个。
 * **/

class Solution45 {
    public String minNumber(int[] nums) {
        if (nums == null || nums.length == 0) return null;

        //int类型数组转化为string类型数组  ： for 循环
        String[] ss = new String[nums.length];
        for (int i = 0; i < nums.length; i++) {
            ss[i] = String.valueOf(nums[i]);
        }
        //对string数组进行排序
//        Arrays.sort(ss, new Comparator<String>() {
//            @Override
//            public int compare(String s1, String s2) {
//                return (s1 + s2).compareTo(s2 + s1);
//            }
//        });
        Arrays.sort(ss, (s1, s2) -> ((s1 + s2).compareTo(s2 + s1)));
        //        Arrays.sort(ss, (参数列表) -> (返回语句));
        //String数组转化为String类型
        StringBuilder sb = new StringBuilder();
        for (String s: ss) {
            sb.append(s);
        }
        return sb.toString();
    }
}